package hibernate;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

import entity.Administracion.Entity_Destino;
import entity.Administracion.Entity_DestinoInternacional;
import entity.Administracion.Entity_DestinoNacional;
import entity.Administracion.Entity_Empleado;
import entity.Administracion.Entity_Pais;
import entity.Administracion.Entity_Provincia;
import entity.Administracion.Entity_Rol;
import entity.Administracion.Entity_Stock;
import entity.Administracion.Entity_Sucursal;
import entity.Administracion.Entity_Usuario;
import entity.Cliente.Entity_Cliente;
import entity.Cliente.Entity_CuentaCorriente;
import entity.Cliente.Entity_DetalleFacturaCliente;
import entity.Cliente.Entity_DetalleReciboPago;
import entity.Cliente.Entity_DireccionEntrega;
import entity.Cliente.Entity_FacturaCliente;
import entity.Cliente.Entity_ProductoCliente;
import entity.Cliente.Entity_ReciboPago;
import entity.Encomienda.Entity_ActividadEncomienda;
import entity.Encomienda.Entity_Destinatario;
import entity.Encomienda.Entity_Encomienda;
import entity.Encomienda.Entity_EncomiendaEmpresa;
import entity.Encomienda.Entity_EncomiendaEnStock;
import entity.Encomienda.Entity_EncomiendaParticular;
import entity.Encomienda.Entity_Envio;
import entity.Encomienda.Entity_EnvioPropio;
import entity.Encomienda.Entity_EnvioTercerizado;
import entity.Encomienda.Entity_HojaDeRuta;
import entity.Encomienda.Entity_Manifiesto;
import entity.Encomienda.Entity_ProductoClienteEncomienda;
import entity.Encomienda.Entity_Remito;
import entity.Encomienda.Entity_Trayecto;
import entity.Encomienda.Entity_TrayectoIntersucursal;
import entity.Encomienda.Entity_TrayectoOrigenSucursal;
import entity.Encomienda.Entity_TrayectoSucursalDestino;
import entity.Proveedor.Entity_FacturaProveedor;
import entity.Proveedor.Entity_PrecioCarrier;
import entity.Proveedor.Entity_Proveedor;
import entity.Proveedor.Entity_Seguro;
import entity.Proveedor.Entity_ServicioSeguridad;
import entity.Vehiculo.Entity_PlanMantenimiento;
import entity.Vehiculo.Entity_TareaMantenimiento;
import entity.Vehiculo.Entity_TareaMantenimientoKilometro;
import entity.Vehiculo.Entity_TareaMantenimientoRealizada;
import entity.Vehiculo.Entity_TareaMantenimientoTiempo;
import entity.Vehiculo.Entity_Vehiculo;


public class HibernateUtil
{
    private static final SessionFactory sessionFactory;
    static
    {
        try
        {
        	 AnnotationConfiguration config = new AnnotationConfiguration();
        	//**Administracion**//
        	 config.addAnnotatedClass(Entity_Pais.class);
        	 config.addAnnotatedClass(Entity_Provincia.class);
        	 config.addAnnotatedClass(Entity_Empleado.class);
        	 config.addAnnotatedClass(Entity_Stock.class);
        	 config.addAnnotatedClass(Entity_Sucursal.class);
        	 config.addAnnotatedClass(Entity_Usuario.class);
        	 config.addAnnotatedClass(Entity_Rol.class);
        	 config.addAnnotatedClass(Entity_Destino.class);
        	 config.addAnnotatedClass(Entity_DestinoNacional.class);
        	 config.addAnnotatedClass(Entity_DestinoInternacional.class);
        	 
        	//**Cliente**//
        	 config.addAnnotatedClass(Entity_Cliente.class);
        	 config.addAnnotatedClass(Entity_CuentaCorriente.class);
        	 config.addAnnotatedClass(Entity_DireccionEntrega.class);
        	 config.addAnnotatedClass(Entity_ProductoCliente.class);
        	 config.addAnnotatedClass(Entity_FacturaCliente.class);
        	 config.addAnnotatedClass(Entity_DetalleFacturaCliente.class);
        	 config.addAnnotatedClass(Entity_ReciboPago.class);
        	 config.addAnnotatedClass(Entity_DetalleReciboPago.class);
        	 
        	 //**Encomienda**//
        	 config.addAnnotatedClass(Entity_ActividadEncomienda.class);
        	 config.addAnnotatedClass(Entity_Destinatario.class);
        	 config.addAnnotatedClass(Entity_Encomienda.class);
        	 config.addAnnotatedClass(Entity_EncomiendaEmpresa.class);
        	 config.addAnnotatedClass(Entity_EncomiendaEnStock.class);
        	 config.addAnnotatedClass(Entity_EncomiendaParticular.class);
        	 config.addAnnotatedClass(Entity_Envio.class);
        	 config.addAnnotatedClass(Entity_EnvioPropio.class);
        	 config.addAnnotatedClass(Entity_EnvioTercerizado.class);
        	 config.addAnnotatedClass(Entity_HojaDeRuta.class);
        	 config.addAnnotatedClass(Entity_Manifiesto.class);
        	 config.addAnnotatedClass(Entity_ProductoClienteEncomienda.class);
        	 config.addAnnotatedClass(Entity_Trayecto.class);
        	 config.addAnnotatedClass(Entity_Remito.class);
        	 config.addAnnotatedClass(Entity_TrayectoIntersucursal.class);
        	 config.addAnnotatedClass(Entity_TrayectoOrigenSucursal.class);
        	 config.addAnnotatedClass(Entity_TrayectoSucursalDestino.class);
 
        	 //**Proveedor**//
        	 config.addAnnotatedClass(Entity_FacturaProveedor.class);
        	 config.addAnnotatedClass(Entity_PrecioCarrier.class);
        	 config.addAnnotatedClass(Entity_Proveedor.class);
        	 config.addAnnotatedClass(Entity_Seguro.class);
        	 config.addAnnotatedClass(Entity_ServicioSeguridad.class);

        	//**Vehiculo**//
        	 config.addAnnotatedClass(Entity_PlanMantenimiento.class);
        	 config.addAnnotatedClass(Entity_TareaMantenimiento.class);
        	 config.addAnnotatedClass(Entity_TareaMantenimientoKilometro.class);
        	 config.addAnnotatedClass(Entity_TareaMantenimientoTiempo.class);
        	 config.addAnnotatedClass(Entity_Vehiculo.class);
        	 config.addAnnotatedClass(Entity_TareaMantenimientoRealizada.class);
        	 
        	 
             sessionFactory = config.buildSessionFactory();
        }
        catch (Throwable ex)
        {
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }
 
    public static SessionFactory getSessionFactory()
    {
        return sessionFactory;
    }
}